C++ API および Softimage オブジェクト モデル(OM)は、どちらもオブジェクト指向のアプローチで実装されています。 つまり、子となるクラスは親クラスの関数を継承し、その後にさらに特定の関数を実装することでそのクラスを拡張します。 両方の API で階層表示を使用できます。
Softimage の SDK Explorer を使用することも可能です。SDK Explorer は、選択したオブジェクトの SDK 情報を表示するリレーショナル ビューです。 SDK Explorer を表示するには、Softimage のメイン メニューで[表示](View)[スクリプト](Scripting)
[SDK Explorer]を選択します。
SDK Explorer は、スクリプト化されたオブジェクト モデルの情報と、スクリプト リファレンス ページへのリンクを表示します。 コマンドおよびスクリプト リファレンス ページには、対応する C++ リファレンス ページが含まれているため、ミラー C++ 情報を容易に取得することができます。
以下のセクションでは、スクリプト オブジェクト モデルと C++ クラス ライブラリを非常に高いレベルから捕らえた内容を提供します。
両方の API の Softimage シーンの基本の構成要素は、SIObject またはSIObjectであり、 これは Name や FullName、 Type、Origin および OriginPath などの基本的な情報を実装しています。 大部分のオブジェクトは SIObject から継承されます。
Application または Application は、次の構文を使用して、スクリプト化およびコンパイルされたプラグインに Softimage への接続を提供します。
Softimage 外部で実行できるスクリプト プラグイン(たとえば、NetView ページ)を記述する場合は、以下のように Application オブジェクトを使って Softimage に接続することができます。
// JScript var xsi_app = new ActiveXObject( XSI.Application ); var app = xsi_app.Application; app.LogMessage( "Initiating NetView session" );
C++ API でプラグインを記述する場合は、次のコードを使用します。
Application app; app.LogMessage( L"Welcome to Softimage!" );
オブジェクト モデルで C# プラグインを記述する場合は、次のコードを使用します。
CXSIApplicationClass app = new CXSIApplicationClass(); app.LogMessage( "Custom Plug-in started", siSeverity.siInfo );
また、Application クラスは、コマンドの制作と実行、アドオンのインストール、Softimage 基本ユーティリティ(ディクショナリ、選択、デスクトップなど)へのアクセスなどの重要な多くのサービスを提供します。
プロジェクトレベルの項目とシーンレベルの項目で基本クラスとして主に使用するクラスは 2 つあります。
ProjectItem または ProjectItem: プロジェクト内の大部分のコンテンツ オブジェクト用の基本クラス。たとえば、ProjectItem から継承するオブジェクトにはパラメータが存在する可能性があります。 ProjectItem から継承するオブジェクトには、Clip または Clip、Source または Source、Operator または Operator、Shader または Shader、Scene または Scene などがあります。
SceneItem または SceneItem: 大部分のシーン オブジェクト用の基本クラス。たとえば、SceneItem から継承するオブジェクトの多くにはプロパティが存在する可能性があります。 SceneItem から継承するオブジェクトには、Cluster または Cluster、Group または Group、Model または Model、X3DObject または X3DObject などがあります。
3D シーン オブジェクトを管理するメイン クラスは、X3DObject または X3DObject で、これは子オブジェクトを作成する関数を実装し、ジオメトリへのアクセスを可能にし、子を介したナビゲーションを提供します。
シーン オブジェクトのデータにアクセスする際に使用できる代表的な関数の一部を以下に紹介します。
SceneItem.Properties または SceneItem::GetPropertiesSceneItem または SceneItem クラスから継承され、オブジェクトのプロパティ セットへのアクセスを提供します。ProjectItem.Parameters property または ProjectItem::GetParameters メンバ関数を使用して、個別のパラメータにアクセスできます。
X3DObject.ActivePrimitive プロパティ または X3DObject::GetActivePrimitive メンバ関数: Primitive または Primitive を介してオブジェクトのジオメトリへのアクセスを提供します。 Geometry または Geometry オブジェクトは、オブジェクトのサブコンポーネントへのローレベル アクセスを提供します。
X3DObject.Kinematics property または X3DObject::GetKinematics メンバ関数: 位置、スケーリング、回転などを制御するデータを含む特別な種類のプロパティへのアクセスを提供します。
AddXXX: 特定のタイプのエレメントをシーン オブジェクト(Scene_Rootなど。それは、X3DObject または X3DObject の一種である)。この中で最も一般的なのは、AddGeometry または AddGeometry 関数であり、新規の立方体、球などを追加できます。
FindChild または FindChild、FindChildren または FindChildren、X3DObject.Children プロパティ または X3DObject::GetChildren メンバ関数: シーン オブジェクトの下に特別なオブジェクト(またはオブジェクトの種類)を検索できるナビゲーション ツールを提供します(ここでも Scene_Root を含みます)。
オブジェクト モデルで実装され、特定の Softimage アイテムを表すクラスは数多く存在します。たとえば、Shader または Shader、Camera または Camera、Vertex または Vertex、ImageClip または ImageClip、Port または Port などです。
さらに機能を充実させるグローバル クラス(intrinsic)とユーティリティ クラスがいくつか用意されています。 使用できるものは次のとおりです。
Application または Application クラス: Softimage および重要なサービスに接続します。
計算機能: オブジェクト モデルの XSIMath オブジェクト、および C++ API の XSI::MATH ネームスペースを介して実装されます。 数学に関する便利なメソッドとインタフェースを提供します。
UI Toolkit または UI Toolkit: ユーザ インタフェースの構築の際に使用すると役立つツールへのアクセスを提供します。たとえば、ProgressBar または ProgressBar、MsgBox または MsgBox などです。
XSIUtils オブジェクト: オブジェクト モデル内でのみ使用できます。 DataRepository や Linktab などの一般的なユーティリティにアクセスできます。